For many enterprise applications, finite resources must be allocated among a number of requests for such resources. In an enterprise call center, for example, incoming calls must often be routed to an appropriate call center agent at one or more local or remote call centers. Incoming calls are generally distributed among a number of agents within the call center who are each trained to handle certain types of incoming calls. A call center will normally be capable of handling many different types of received calls. For example, a call center may receive calls relating to each of a multitude of different products and/or services offered by the corresponding enterprise. The services and functions handled by a call center may include taking product orders, providing customer service, providing pricing and/or availability information, or a number of other functions. The types of calls that are supported by a call center are commonly referred to as the “skills” of the call center. Each skill typically has an associated queue for storing received calls until an appropriate agent is available to process the call.
It is often desirable that each of the different skills (and thus queues) associated with a call center be handled differently by the call center. In other words, some of the skills may be deemed by the enterprise to be more important than other skills and hence are to be given more attention or a higher level of service by the call center. Thus, a service level target is often defined for each of the different skills of the call center to indicate a desired level of service for the skill. However, past techniques for achieving the desired service levels for each of the skills of a call center have generally been inadequate. That is, actual performance levels for the different skills have not accurately reflected the desired service level targets defined for those skills.
A call center will often have specific queues for storing received calls having a particular purpose and non-specific queues for storing received calls of a more general purpose. Typically, each specific queue is serviced by a particular call center agent. For example, in the context of a financial institution, a certain broker or employee may be assigned to address all communications from a particular customer. Such requests are often referred to as preferred resource requests. It is generally assumed that only the agent associated with a specific queue (or preferred request) can handle the preferred requests in the specific queue. Generally, the agent associated with a specific queue will sequentially service the preferred requests from the specific queue, at the expense of other queues, such as non-specific queues, that the agent may be qualified to service.
Nonetheless, the specific resource associated with a preferred request may be busy with other requests or otherwise unavailable to handle the preferred request within a time frame that satisfies the service level targets that have been defined for the specific queue. Static time-out periods have been employed for specific queues that will transfer the call to a non-specific queue when the waiting time for the preferred request exceeds a predefined threshold. While such static time-out periods provide a mechanism for limiting the waiting time of a preferred request they do not account for any dynamic factors that may be available in the resource allocation system. A need therefore exists for methods and apparatus for dynamically reallocating a preferred request in one or more specific queues to one or more generic queues.